Network connected devices (e.g., Internet of Things (i.e., IoT) devices) allow remote control and automation of the devices within an environment (e.g., home). However, these devices are often not capable of being fully autonomous. Often users must manually operate the devices in a remote control fashion, or users manually create rules that try to mimic autonomous operations. As user preferences change and multiple users inhabit the same environment, it becomes increasingly difficult to manually maintain the optimal set of rules. Additionally, different automation rules may conflict one another and must be effectively resolved. Therefore there exists a need for a way to automate functionality of network connected devices in a dynamic and efficient manner.